/*
* Copyright 2011-2017 Kay Stenschke
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.kstenschke.shifter.models.shiftableTypes;
import org.apache.commons.lang.StringEscapeUtils;
/**
* HTML encoded/encode-able (=containing char(s) that be be encoded) String.
*/
public class StringHtmlEncodable {
/**
* Check whether given character can be encoded to an HTML special char / or is already HTML encoded
*
* @param str String to be shifted currently
* @return boolean
*/
public static boolean isHtmlEncodable(String str) {
Integer strLenOriginal = str.length();
String encoded = StringEscapeUtils.escapeHtml(str);
String decoded = StringEscapeUtils.unescapeHtml(str);
return !strLenOriginal.equals(encoded.length()) || !strLenOriginal.equals(decoded.length());
}
/**
* Shift to HTML encoded/decoded variant of given string
*
* @param word word to be shifted
* @return String
*/
public static String getShifted(String word) {
Integer strLenOriginal = word.length();
String decoded = StringEscapeUtils.unescapeHtml(word);
Integer strLenDecoded = decoded.length();
if (!strLenOriginal.equals(strLenDecoded)) {
return decoded;
}
String encoded = StringEscapeUtils.escapeHtml(word);
Integer strLenEncoded = encoded.length();
return !strLenOriginal.equals(strLenEncoded) ? encoded : word;
}
}